import axios from 'axios';

export const generateAIResponse = async ({ subject, grade, topic }) => {
  try {
    // 从localStorage获取教师ID，如果不存在则使用默认值"guest"
    const teacherId = localStorage.getItem('teacherId') || 'guest';
    // 获取token
    const token = localStorage.getItem('token');
    
    // 动态构建请求 URL
    const url = `/api/teaching/plan`;
    const response = await axios.post(url, null, {
      params: {
        subject: subject,
        grade: grade,
        topic: topic,
        teacherId: teacherId // 添加教师ID作为参数
      },
      headers: token ? {
        'Authorization': `Bearer ${token}` // 添加token到请求头
      } : {}
    });
    
    // 检查并处理返回的数据格式
    if (response.data && response.data.code === 200) {
      return response.data; // 直接返回完整响应，包括originalResponse字段
    } else {
      return response.data; // 如果格式不是预期的，仍然返回数据
    }
  } catch (error) {
    console.error('API Error:', error.message);
    if (error.response) {
      console.error('Response Data:', error.response.data);
      console.error('Response Status:', error.response.status);
      
      // 如果是401未授权错误(可能是token过期)，不自动跳转到登录页
      if (error.response.status === 401) {
        throw new Error('请先登录后再生成教学设计');
      }
    } else if (error.request) {
      console.error('Request Data:', error.request);
    }
    throw error; // 抛出错误以便前端捕获
  }
};

/**
 * 保存前端设计的教学计划到数据库
 * @param {Object} params 教学计划参数
 * @param {string} params.subject 学科
 * @param {string} params.grade 年级
 * @param {string} params.title 标题（可选）
 * @param {string} params.content 教学计划内容
 * @returns {Promise<Object>} 保存结果
 */
export const saveTeachingPlan = async ({ subject, grade, title, content }) => {
  try {
    // 从localStorage获取教师ID，如果不存在则使用默认值"guest"
    const teacherId = localStorage.getItem('teacherId') || 'guest';
    // 获取token
    const token = localStorage.getItem('token');
    
    // 构建请求URL
    const url = `/api/teaching-plans/save-design`;
    const response = await axios.post(url, content, {
      headers: {
        'Content-Type': 'text/plain',
        ...(token ? { 'Authorization': `Bearer ${token}` } : {}) // 添加token到请求头
      },
      params: {
        subject,
        grade,
        title: title || `${grade}${subject} - 教学设计`,
        teacherId // 传递教师ID作为参数
      }
    });
    
    return response.data;
  } catch (error) {
    console.error('保存教学计划失败:', error.message);
    if (error.response) {
      console.error('Response Data:', error.response.data);
      console.error('Response Status:', error.response.status);
      
      // 如果是401未授权错误，提示用户登录
      if (error.response.status === 401) {
        throw new Error('请先登录后再保存教学设计');
      }
    }
    throw error;
  }
};